#include <iostream>
using namespace std;

//[捕获列表](参数列表)->返回类型{函数体}

#if 0
补充知识：
1. 如果捕获列表为[&]，则表示所有的外部变量都按引用传递给lambda使用；
2. 如果捕获列表为[=]，则表示所有的外部变量都按值传递给lambda使用；
3. 匿名函数构建的时候对于按值传递的捕获列表，会立即将当前可以取到的值拷贝一份作为常数，然
后将该常数作为参数传递。
#endif
int main()
{
    int c = 12;
    // auto Add = [&c](int a, int b) -> int
    auto Add = [&c](int a, int b) -> int
    {
        // 捕获列表改为了&c，表示按引用传递，就可以修改了；不加 &表示按值传递，无法通过编译
        c = a;
        return c;
    };
    std::cout << Add(1, 2) << std::endl;
    return 0;
}